#ifndef COMMON_PALETTE_H
#define COMMON_PALETTE_H

#include <common/color.h>
#include <vector>
#include <string_view>
#include <memory>

class IPalette
{
public:
    [[nodiscard]] virtual const Color& GetColor(size_t index) const = 0;
    [[nodiscard]] virtual size_t GetLength() const = 0;
};

class IPaletteReader
{
public:
    virtual std::shared_ptr<IPalette> ReadFormFile(const std::string& file) = 0;
};

class IPaletteWriter
{
public:
    virtual void WriteToFile(const std::string& file, const IPalette& palette) = 0;
};

#endif //COMMON_PALETTE_H
